//axios插件
import axios from 'axios'
//可选是否插入
//store插件
import store from '@/store'
//router插件
import router from '../router/index.js'
//qs插件
import qs from 'qs'
//是否允许跨域时携带cookie信息[不允许]
axios.defaults.withCredentials=false
//设置token认证接口时，配置axios的默认表头配置【默认打开页面时没有token】
let token='';
axios.defaults.headers.common['Authorization']=token
//axios实例中配置默认的访问服务器端口
let url='http://127.0.0.1:8090';//项目打包时，此处为空
let instance=axios.create({
	baseURL:url,
})
//请求拦截器：在发送post/get请求之前，判断是否在本地中存储了token，如果有添加到headers内，后台会直接判断token是否过期
instance.interceptors.request.use(config=>{
	//拦截成功的操作
	//获取本地的token
	let token=localStorage.getItem('token');
	//判断是否存在token
	if(token){
		config.headers.Authorization='bearer '+token;
	}
	//返回配置
	return config
},error=>{
	//拦截失败的操作
	return Promise.reject(error)
})
//响应拦截器：用于拦截后台的报错处理
instance.interceptors.response.use(response=>{
	return response;
},err=>{
	//响应失败
	console.log(err.response.status)
	//判断接口返回的错误信息是否为真
	if(err.response){
		switch(err.response.status){
			case 400:
			console.log("账号或密码错误")
			break;
			case 401:
			//登录失败，清除之前的token
			localStorage.setItem('token',"")
			router.push({path:'/'})
			break;
		case 403:
			console.log("非法闯入、禁止访问")
			break;
			default:
			console.log('请求错误！')
			break;
		}
	}
	//返货接口的信息提示
	return Promise.reject(err.response.data)
})
//导出axios实例
export default instance


//请求方式的封装【不需要导出axios实例】

//get请求：url参数

// export let $get = (url,params)=>{
// 	return instance.get(url,{
// 		params:params,
// 	})
// }

//post请求封装三种类型

//1.post请求并提交json数据的推送
//url：地址，data提交的数据
// export let $postJson = (url,data)=>{
// 	return instance.post(url,data,{
// 		headers:{'Content-Type' : 'application/json'}
// 	})
// }


//2.post请求并上传文件
//url：地址，data提交的数据
// export let $postUpload = (url,formdata)=>{
// 	return instance.post(url,formdata,{
// 		headers:{'Content-Type' : 'multipart/form-data'}
// 	})
// }


//3.post请求并上传文件
//url：地址，data提交的数据
// export let $post = (url,data)=>{
// 	let qsdata = qs.stringify(data)
// 	return instance.post(url,qsdata,{
// 		headers:{'Content-Type' : 'application/x-www-form-urlencoded'}
// 	})
// }